Merging network with three or more simultaneous inputs

ABSTRACT

A merging network which receives three or more simultaneous input lists of sorted numbers and merges the input lists to form a single sorted list at its outputs. The merging network comprises three stages of interconnected comparator modules, the merging network inputs being connected to the inputs of the comparator modules of the first stage with a mod shuffle interconnection pattern. The outputs of the third stage form the network outputs of the merging network. The first, second, and third stages include one or more comparator modules which are larger than two-by-two. The inventive merging network may be utilized recursively to form a sorting network.

FIELD OF THE INVENTION

The present invention relates to a merging network. More specifically, the present invention relates to a merging network which receives more than two ordered lists of numbers at its inputs and merges these lists to form a single ordered list at its outputs. The inventive merging network may be utilized recursively to form a sorting network for sorting a list of numbers. This sorting network has significant advantages in comparison to a conventional binary sorting network.

BACKGROUND OF THE INVENTION

Sorting is a fundamental process in many computer and communication systems. For example, sorting plays an important role in parallel computing and also in packet switching. In the case of packet switching, it is known that a packet switch based on an interconnection network such as a banyan network is internally non-blocking, if the packets inputted to the banyan network are sorted according to their destination addresses. Thus, an internally non-blocking packet switch may be formed by connecting a sorting network and a banyan network in sequence. In addition, sorters play an important role in the areas of relational databases. For example, sorters may be utilized to perform relational database operations such as join operations in a distributed computer system.

Many sorting networks and algorithms have been proposed. (See e.g., D. E. Knuth, "The Art of Computer Programming", Vol. 3, Addison Wesley, Reading, Mass., 1973). Recently, a network with a size on the order of nlogn for sorting n numbers has been discovered. (See e.g. M. Ajtai et al, "An O(nlogn) Sorting Network" Proc. 15^(th) Annual ACM Symposium on Theory of Computing, 1983, pp. 1-9). Although this network is asymptotically optimal, it performs poorly for practical values of n.

Merging is a process of arranging m ordered lists of numbers into one ordered list. In his pioneer paper, "Sorting Networks and Their Applications" AFIPS Proceeding of the Spring Joint Computer Conference, 1960, pp. 307-318, K. E. Batcher proposed two binary merging networks. A binary merging network receives two ordered lists at its inputs and merges these lists to form a single ordered list at its outputs. A plurality of binary merging networks may be utilized recursively to form a sorting network. A recursive sorting network for sorting 2^(n) input numbers into an ordered list comprises n stages. The first stage comprises 2^(n-1) two-by-two merging networks, each of which orders a pair of adjacent input numbers. Thus, the output of the first stage is 2^(n-1) ordered lists of two numbers each. The second stage comprises 2^(n-2) four-by-four merging networks, each of which merges two of the ordered lists outputted by the first stage. Thus, the second stage outputs 2^(n-2) ordered lists, each of which comprises four numbers. The third stage comprises 2^(n-3) eight-by-eight merging networks, each of which merges two of the four-number lists outputted by the second stage. This structure continues until in the last stage there is only one merging network which outputs a single ordered list comprising all of the input numbers.

The binary merging networks which are utilized in the above-described sorting network are themselves formed from 2×2 comparator modules which are organized into stages. In particular, an nxn binary merging network comprise log₂ n stages, each of which comprises n/2 2 × 2 comparator modules.

A binary sorting network of the type described above has a number of disadvantages. Because each merging network utilized in the sorting network can sort at most two ordered lists, a relatively large number of stages and a correspondingly large number of merging networks are required. Furthermore, with each successive stage in the binary sorting network, the merging networks are increasingly larger and comprise increasingly large numbers of two-by-two comparator modules. In addition, the length of the interconnection wires between stages in a binary sorting network grows geometrically as the number of stages increases, although the logic complexity of the 2 ×2 comparator modules remains the same. In fact, the overall latency of a binary sorting network may be dominated more by the propagation delays of interconnection wires than by the processing delays of the two-by-two comparator elements.

A great simplification in sorting networks formed recursively from merging networks would be achieved if merging networks were available which could merge more than two ordered input lists.

The problem of providing a merging network which can merge more than two ordered input lists is well known and is intimately related to the problem of forming a merging network from comparator modules which are larger than 2 × 2. These problems have not been completely solved heretofore.

A partial solution is provided by the ColumnSort network (see, e.g., F. T. Leighton, "Tight Bounds on the Complexity of Parallel Sorting", IEEE Trans. on Computer, Vol. 34, No. 4, 1985, pp. 344-354). The ColumnSort network is based on the transformation of matrices. However, this network cannot be utilized recursively to form a large sorter and is limited by a number of constraints on the dimensions of the matrices involved.

Accordingly, it is an object of the present invention to provide a merging network which merges more than two ordered input lists to form a single ordered output list.

It is a further object of the invention to provide a merging network which is formed by comparator modules which can be larger than two-by-two.

It is also an object of the present invention to provide a merging network which can be utilized recursively to form a large sorting network that has fewer stages and simpler interconnection wiring than the conventional binary sorting network.

SUMMARY OF THE INVENTION

The present invention is a merging network for merging a plurality of sorted input lists into a single sorted output list. In contrast to the prior art binary merging networks, the merging network of the present invention merges more than two input lists.

In an illustrative embodiment, a merging network comprises a set of network inputs for receiving m,m>2, input lists of sorted numbers. The merging network also comprises a set of network outputs for outputting a single list of sorted numbers formed from the m input lists. Located in between the network inputs and the network outputs are first, second, and third stages. Each of these three stages comprises one or more comparator modules which may be larger than two-by-two. Each of these comparator modules receives a set of numbers at its inputs and sorts the numbers into an ordered list which appears at its outputs. The individual comparator modules may themselves be Batcher networks.

In the inventive merging network, the first of the three stages comprises s comparator modules B_(j),j=1,2, . . . ,s. Each of the comparator modules B_(j) has one or more inputs and one or more Outputs. The network inputs are connected to the inputs of the comparator modules B_(j) by a mod(s) shuffle interconnection pattern. The outputs of each of the comparator modules B_(j) in the first stage are partitioned into intervals, I_(j),i, where I_(j),i indicates the i^(th) output interval of the comparator module B_(j). Each interval I_(i),j includes a subset of the outputs of the corresponding comparator module B_(j).

The second stage comprises k comparator modules C_(i), i=1,2, . . . ,k. Each of the comparator modules C_(i) of the second stage has one or more inputs and one or more outputs. The i^(th) interval of outputs, I_(j),i, of each of the comparator modules B_(j) of the first stage is connected to a subset of the inputs of the comparator module C_(i) of the second stage.

The third stage comprises a plurality of inputs and a plurality of outputs. Each input of the third stage is directly connected to a corresponding output of one of the comparator modules of the second stage. The outputs of the third stage form the network outputs of the merging network. The third stage comprises k.1 comparator modules D_(i), i=1,2, . . . ,k-1. Each comparator module D_(i) of the third stage has one or more inputs. Each input of a comparator module D_(i) is formed by an input to the third stage. Each comparator unit D_(i) also has one or more outputs. Each output of a comparator unit D_(i) is formed by one output of the third stage. Each of the inputs of a comparator module D_(i) in the third stage is connected to an output of the comparator module C_(i) or C_(i+1) in the second stage. In some embodiments of the inventive merging network, some of the inputs to the third stage are not inputs to one of said comparator modules D_(i) of the third stage, but rather are connected directly to corresponding ones of the outputs of the third stage.

Algorithms for determining the number and sizes of the comparator modules B_(j), C_(i), D_(i) are discussed below. Algorithms for determining how to partition the outputs of the comparator modules B_(j) of the first stage into intervals and for determining the subsets of inputs of the third stage, which are inputs to particular comparator modules, D_(i) modules, are also discussed below.

When a merging network is constructed in this manner, a plurality of three or more ordered input lists may be merged into a single ordered output list. The inventive merging network may be utilized recursively to form a sorter which is much less complex than the conventional binary sorter.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 schematically illustrates a merging network formed from three stages of comparator modules, in accordance with an illustrative embodiment of the present invention.

FIG. 2 schematically illustrates an example of the operation of the merging network of FIG. 1.

FIG. 3 schematically illustrates a further example of the operation of the merging network of FIG. 1.

DETAILED DESCRIPTION OF THE INVENTION

FIG. 1 illustrates a merging network 10 in accordance with an illustrative embodiment of the present invention.

The network 10 has a plurality of inputs 20. The inputs 20 receive m ordered lists of numbers

    A.sub.1, A.sub.2, . . . , A.sub.m.

The first list A comprises

    {a.sub.1 (1),a.sub.1 (2), . . . a.sub.1 (j), . . . ,a.sub.1 (s), . . . a.sub.1 (r.sub.1)}.

The second list A₂ comprises

    {a.sub.2 (1), a.sub.2 (2), . . . , a.sub.2 (j), . . . , a.sub.2 (s), . . . , a.sub.2 (r.sub.2)}.

The m^(th) list A_(m) comprises

    {a.sub.m (1), a.sub.m (2), . . . , a.sub.m (j), . . . , a.sub.m (s), . . . , a.sub.m (r.sub.m)}.

The total number of network inputs 20 may be expressed as

    r.sub.1 +r.sub.2 +. . . r.sub.m.

The network 10 also comprises the outputs 32. A single ordered list of numbers d(1),d(2), . . . is formed by the network 10 at the outputs 32. The list of numbers d(1),d(2), . . . is formed from the numbers contained in the input lists A₁, A₂, . . . ,A_(m). Preferably the network 10 of FIG. 1 has r₁ +r₂ +. . . +r_(m) outputs 32.

The merging network 10 of FIG. 1 comprises three stages 12, 14, and 16. Each of these stages comprises one or more comparator modules. As used herein, the term comparator module refers to a circuit or other data processing unit which receives a group of numbers at its inputs and sorts these numbers into an ordered list which appears at its outputs. The individual comparator modules 12, 14, and 16 may themselves be Batcher networks.

The first stage 12 comprises s comparator modules B_(j), j=1,2, . . . ,s.

The modules B_(j) of the first stage 12 have the inputs 22. The network inputs 20 and the inputs 22 of the modules B_(j) are connected using a shuffle interconnection pattern. This means that a number a_(l) (k) from the list A_(l) will input to the comparator module B_(j) if k=j mod(s) for j=1, . . . ,s-1 and k=0 mod(s) for j=s.

Each comparator module B_(j) of the first stage 12 has a plurality of outputs 24. The outputs 24 of each comparator module B_(j) are partitioned into i intervals where i=1,2, . . . ,k. Each of the intervals is designated I_(j),i, which indicates the i^(th) output interval of the comparator module B_(j). For example, as shown in FIG. 1, the outputs 24 of comparator module B_(j) are divided into the intervals I₂,1, I₂,2, . . . , I₂,k. In general, each interval I_(j),i includes a subset of the outputs of the corresponding comparator module B_(j). Some of the subsets may be empty.

The second stage 14 of the network 10 comprises k comparator modules C_(i), i=1,2, . . . ,k.

Each of the comparator modules C_(i) in the stage 14 has a set of inputs 26 and a set of outputs 28. The output interval I_(j),i associated with the comparator module B_(j) of stage 12 is connected to a subset of the inputs 26 of the comparator module C_(i) of stage 14. For example, the outputs in the interval I₁,1 of the comparator module B₁ in the stage 12 are connected to the comparator module C₁ in the stage 14, the outputs in the interval I₁,2 of the comparator module B₁ are connected to the comparator module C₂, and the outputs in the interval I₁,k are connected to the comparator module C_(k). Similarly, the outputs in the interval I₂,1 of the comparator module B₂ of the stage 12 are connected to the comparator module C₁ of the stage 14, the outputs in the interval I₂,2 are connected to the comparator module C₂ and the outputs of the interval I₂,k are connected to the comparator module C_(k).

Each output 24 of a comparator module B_(j) in the stage 12 is given an index x_(j), x_(j) =1,2, . . . . The number which appears on an output 24 of comparator B_(j) with index x_(j) is b_(j) (x_(j)). The interval I_(j),i of the comparator module B_(j) of the stage 12 may be expressed as

    I.sub.j,i =(x.sub.j,i-1 +1, . . . , x.sub.j,i)

where x_(j),i-1 is the last output in the interval I_(j),i-1 so that x_(j),i-1 +1 is the first output in the interval I_(j),i and x_(j),i is the last output in the interval I_(j),i. For example, as shown in FIG. 1, the last output in the interval I₁,1 of the comparator module B₁ of stage 12 is x₁,1. The first output in the interval I₁,2 is x₁,1 +1. The last output in the interval I₁,2 is x₁,2. Thus, the interval I₁,2 may be (represented as

    I.sub.1,2 ={x.sub.1,1 +1, . . . ,x.sub.1,2 }).

The third stage 16 of the merging network 10 of FIG. 1 comprises a plurality of inputs 29 and a plurality of outputs 30. Each input 29 of the stage 16 is connected to a corresponding output 28 of the stage 14. Each output 30 of the stage 16 is connected to (or forms) a corresponding one of the network outputs 32. The connection pattern between the outputs 28 of the stage 14 and the inputs 29 of the stage 16 and between the outputs 30 of the stage 16 and network outputs 32 is known as a horizontal connection pattern (because the rows are horizontal).

Each row in the horizontal connection pattern is given an index z, z=1,2, . . . . The last output of each comparator module C_(i) in the stage 14 belongs to the row z=y_(i). For example, the last output of the comparator C₁ has the index y₁ and the last output of the comparator C_(k) has the index y_(k).

The stage 16 comprises k-1 comparator modules D_(i),i=1,2,3, . . . , k-1. Each module D_(i) has a set of inputs 34 and a set of outputs 36. Each input 34 is formed by one of the inputs 29 to the third stage 16. Each output 36 is formed by one of the outputs 30 of the third stage 16. The last input of each comparator module D_(i) belongs to the row z=z_(i). For example, the last input of the comparator module D₁ has the index z=z₁ and the last input of the comparator module D_(k-1) has the index z=z_(k-1). The index z=z₀ represents the connection row which comes before the row containing the first input to the comparator module D₁.

To construct an actual merging network in accordance with the architecture of FIG. 1, the index values x_(j),i, (i.e. the last output of each interval I_(j),i associated with the comparator module B_(j) of stage 12), y_(i) (i.e. the last output of each comparator module C_(i) of the stage 14) and z_(i) (i.e. the last output of each comparator module D_(i) of stage 16) are determined. The index values provide the information that is necessary to construct a network of the type illustrated in FIG. 1. In particular, the index values may be used to determine the size and location of the various comparator modules B_(j), C_(i), D_(i) in the network. These index values are determined such that the set of numbers d(1), d(2), . . . appearing at the network outputs 32 form a single sorted list. In a preferred embodiment of the invention, the index values x_(j),i, y_(i) and z_(i) obey the equations

    z.sub.i-1 -m(j-1)+(m-1)(s-1)≦sx.sub.j,i ≦z.sub.i -m(j-1)+(s-1)                                             (1)

    z.sub.i-1 ≦y.sub.i ≦z.sub.i,                 (2)

for i=1, . . . , k-1, and j=1,2, . . . , s.

Equations (1) and (2) imply that

    b.sub.j (x.sub.j,i)≦d(z.sub.i) and that b.sub.j (x.sub.i,j +1)≧d(z.sub.i-1 +1)

The condition z_(i-1) ≦y_(i) ≦z_(i) implies that any input of the comparator D_(i) in the stage 16 is connected to an output of the comparator C_(i) or C_(i+1) in the stage 14.

The size (i.e. the number of inputs and outputs) n_(j) of a comparator module B_(j) in the first stage 12 is given by

    n.sub.j =p.sub.1 +. . . +p.sub.m +μ(q.sub.1 -j)+. . . +μ(q.sub.m -j), (3)

where p_(l) =r_(l) /s and q_(l) =r_(l) -sp_(l) for l=1, . . . , m, m being the number of lists being merged by the merging network 10 of FIG. 1. The notation x indicates the integer part of x and the step function μ(x)=0 if x<0 and μ(x)=1 otherwise.

The following inequalities are consequences of the equations (1) and (2).

(a) The size of a comparator module D_(i) in the stage 16 is bound by

    z.sub.i -z.sub.i-1 ≧(m-2)(s-2)                      (4)

(b) The length of an interval I_(j),i is bounded by

    x.sub.j,i -x.sub.j,i-1 ≧(m-2)(s-1)/s                (5)

(c) The total number of comparator modules in the stages 12, 14, and 16 is bounded by

    (m-2)(s-1)(k-l)<n                                          (6)

where n=r₁ 30 r₂. . . r_(m) =Σnj, i.e. the total number of inputs to all the comparator units B_(j) in the stage 12.

(d) If none of the intervals I_(j),i are empty for j=1,2, . . . , s then the size of the comparator module C_(i) in the stage 14, i.e., y_(i) -y_(i-1), is bounded by

    y.sub.i -y.sub.i-1 ≧(m-2)(s-1)                      (7)

The partition points x_(i),j for stage 12, y_(i) for stage 14, and z_(i) for stage 16 are determined as follows.

One way to minimize the complexity of the network 10 of FIG. 1 is to make the parameter k as large as possible, which means that the comparator modules C_(i) and D_(i) of the stages 14 and 16 are as small as possible. This is of course subject to the constraints of equations (4) and (6) above. The choice of parameters m,s, and k is flexible as long as the constraints of equations (4) and (6) are not violated. It is advantageous to make the comparator modules C_(i) and D_(i) as small as possible so that their internal complexity is minimized. The comparator modules C_(i) and D_(i) are themselves really sorting networks. If these comparator modules are too large, they themselves will have to be formed recursively from a plurality of merging networks.

For m=s=k, r=r₁ =r₂ =. . . =r_(m) =ps≧2(s-1)² and n=mr=mps=ps² a "close form" solution of equations (1) and (2) is given by ##EQU1## with the initial condition z₀ =Lr/2J.

FIG. 2 illustrates an 18×18 merging network 100 constructed in accordance with Eq. (8). In the example of FIG. 2, m=s=k=3, r=r₁ =r₂ =r₃ =ps=6, p=2 and z₀ =Lr/2=3. The network 100 has eighteen inputs 102. The network 100 receives m=3 ordered input lists A₁, A₂, and A₃ at the inputs 102. Each input list comprises r=6 numbers. The list A₁ is formed by (a₁ (1), . . . ,a₁ (6)). The list A₂ is formed by (a₂ (1), . . . ,a₂ (6)). The list A₃ is formed by (a₃ (1), . . . a₃ (6)). The network 100 of FIG. 2 sorts the input lists A₁, A₂ and A₃ into a single sorted output list which is formed from the numbers d(1),d(2), . . . ,d(18) appearing at the network outputs 103.

The network 100 comprises three stages of comparator modules 112, 114, 116. The first stage 112 is formed by the s=3 comparator modules B₁, B₂, B₃. The second stage 114 is formed by k=3 comparator modules C₁, C₂, C₃. The third stage is formed by k-1=2 comparator modules D and Dz. The size of each module B_(j), j=1,2,3 in stage 112 of FIG. 2 is determined in accordance with equation (3). Equation (3) indicates that in the first stage 112, each of the comparator modules B₁, B₂, B₃ has six inputs 122 and six outputs 124. The network inputs 102 are connected to the inputs 122 of the comparator modules B₁, B₂, B₃ of stage 12 using a mod(3) shuffle interconnection pattern. The outputs 124 of each of the comparator modules B₁, B₂ and B₃ of stage 112 are partitioned into intervals I_(j),i. In accordance with equation (8), the end point x_(j),i of each interval I_(j),i is given by x_(j),i =ip where P=2. Thus, the end points of the output intervals of the comparator B₁ are x₁,1 =2, x₁,2 =4, x₁,3 =6. The corresponding intervals I₁,1, I₁,2 and I₁,3 are illustrated in FIG. 2. Similarly, the end points of the intervals I₂,1, I₂,2 and I₂,3 associated with the comparator module B₂ of FIG. 2 are x₂,1 =2, x₂,2 =4 and x₂,3 =6. The end points of the intervals I₃,1, I₃,2, I₃,3 associated with the comparator module B₃ are x₃,1 =2, x₃,2 =4, and x₃,3 =6.

As shown in FIG. 2, each comparator module C_(i), i=1,2,3 in the stage 114 has the inputs 126 and the outputs 128. In accordance with equation (8), y_(i) =ir=i6 i.e. the index y_(i) of the last output of C₁ equals 6, y₂ (the index of the last output of C₂) equals 12, and y₃ (the index of the last output C₃) equals 18. In this manner it is determined that each comparator module C_(i) in the stage 114 has y_(i) -y_(i-1) outputs and is therefore a 6×6 comparator module. In the manner described above, each interval I_(j),i from the comparator B_(j), j=1,2,3, of stage 112 is connected to a subset of the inputs of the comparator module C_(i). For example, the outputs in the intervals I₁,1, I₁,2 and I₁,3 are connected to a subset of the inputs 126 of C₁, C₂ and C₃, respectively.

As shown in FIG. 2, the stage 116 comprises the comparator modules D₁ and D₂. The initial condition is z₀ =3, so that the first input to the comparator module D₁ has the index z=4. The last input z_(i) of each comparator D_(i), i=1,2 in stage 116 is given by equation (8) as z_(i) =ir+z₀. Thus z₁ =9 and z₂ =15. In this manner the number of inputs z_(i) -z_(i-1) of each comparator module D_(i) is determined to be six. It should be noted that the outputs 128 of the comparator module C₁ of the stage 114 corresponding to z=1, z=2, z=3 are connected directly to corresponding network outputs 103. Similarly, the outputs 128 of the comparator module C₃ of the stage 114 corresponding to z=16, z=17, and z=18 are connected directly to corresponding network outputs 103.

Unfortunately, the requirements on the parameters m,s,k and r in equation (8) are too stringent for the recursive construction of a sorting network. Also the solution of equations (1) and (2) set forth in equation (8) is not the most optimal solution. A more optimal solution for determining the partition points x_(j),i, y_(i), and z_(i) for the modules B_(j), C_(i), and D_(i) of stages 12, 14, and 16 of FIG. 1 may be obtained using the following iterative algorithm. ##STR1## Depending on the value of the initial condition z₀ there may be up to s different solutions which are obtained by this algorithm.

FIG. 3 illustrates an 18×18 merging network 200 constructed in accordance with the iterative algorithm prescribed above. The 18×18 merging network 200 of FIG. 3 is more optimal than the 18×18 merging network 100 of FIG. 2.

The merging network 200 of FIG. 3, receives three lists A₁, A₂ and A₃ at its inputs 202 and outputs a single ordered list at the outputs 204. The network 200 comprises there stages 212, 214, 216.

The stage 212 comprise the comparator modules B₁, B₂, and B₃. Each of the comparator modules in the stage 212 has six inputs 218 and six outputs 220. The network inputs 202 are connected to the inputs 218 using a mod(3) shuffle interconnection pattern. The outputs 220 are divided into intervals I_(j),i in the manner described above.

The stage 214 comprises seven comparator modules C₁, . . . ,C₇. Each comparator module C₁, . . . , C₇ has one or more inputs 222 and one or more outputs 224. In the manner indicated above, the outputs in the interval I_(j),i of the comparator module B_(j) of stage 212 are connected to a subset of the inputs 222 of the comparator module C_(i) of stage 214. It should be noted that in FIG. 2, the intermediate stage 114 comprises three 6×6 comparator modules. In contrast in FIG. 3, the intermediate stage 214 comprises seven comparator modules none of which is larger than 3×3. This is more optimal because the 3×3 comparator modules are of simpler internal construction. In FIG. 3, the comparator module C₇ is shown in phantom. The reason is that C₇ is a one-by-one comparator module which may be replaced by the wire 225.

The stage 216 comprises six comparator modules D₁, . . . , D₆ none of which is larger than three-by-three. There is more optimal than the 6 × 6 comparator modules utilized in the stage 116 of the network 100 of FIG. 2.

In short, a merging network which can merge three or more ordered input lists into a single output list has been disclosed.

Finally, the above-described embodiments of the invention are intended to be illustrative only. Numerous alternative embodiments may be devised by those skilled in the art without departing from the spirit and scope of the following claims. 

I claim:
 1. A merging network comprisinga set of network inputs for receiving m, m>2, input lists of sorted numbers, a set of network output for outputting a single list of sorted numbers formed from said input lists, a first stage comprising s comparator modules B_(j), j=1,2,3, . . . , s, each having one or more inputs and one or more outputs, said network inputs being connected to said inputs of said comparator modules B_(j), of said first stage utilizing mod(s) shuffle interconnection pattern, the outputs of each of said comparator modules B_(j), in said first stage being partitioned into k intervals, each of which intervals includes a subset of the outputs of the corresponding comparator module B_(j), a second stage comprising k comparator modules C_(i), i=1,2, . . . , k, each having one or more inputs and one or more outputs, the i^(th), interval of outputs of each of the comparator modules B_(j), of the first stage being connected to a subset of the inputs of the comparator module C_(i), of the second stage, and a third stage comprising a plurality of inputs and a plurality of outputs, each of said inputs being directly connected to a corresponding output of one of said comparator modules of said second stage and said outputs forming said network outputs, said third stage comprising k-1 comparator modules D_(i), i=1,2, . .. , k-1, each of said comparator modules D_(i) having one or more inputs formed by a subset of said inputs of said third stage and one or more outputs formed by a subset of said outputs of said third stage, each of said inputs of each comparator module D_(i) in said third stage being connected to an output of said comparator module C_(i), or C_(i+1) of said second stage.
 2. The merging network of claim 1 wherein a subset of said inputs to said third stage are connected directly to corresponding ones of said outputs of said third stage.
 3. The merging network of claim 1 wherein an output of a comparator module in said first stage is connected directly to an input of said third stage.
 4. The merging network of claim 1 wherein each comparator module D_(i) in said third stage has Q_(i) inputs and Q_(i) outputs, where Q_(i) ≧(m-2)(s-1).
 5. The merging network of claim 1 wherein each interval of outputs of each comparator module B_(J) in said first stage includes at least (m-2)(s-1)/s outputs.
 6. The merging network of claim 1 wherein the total number of comparator modules in said first, second and third stages is less than (m-2)(s-1)(k-1).
 7. The merging network of claim 1 wherein each comparator module C_(i) in said second stage has P_(i) inputs and P_(i) outputs, where P_(i) ≧(m-2)(s-1).
 8. The merging network of claim i wherein a largest number outputted in the i^(th) interval of outputs of the comparator module B_(j) of said first stage is less than or equal to a largest number received by the comparator module D_(i) in the third stage.
 9. The merging network of claim 8 wherein a smallest number outputted in the (i+1)^(th) interval of outputs of the comparator module B_(j) of the first stage is greater than or equal to the smallest number received by the comparator module D_(i+1) of the third stage.
 10. The merging network of claim 1 wherein each of said first, second, and third stages comprises at least one comparator module having more than two inputs and more than two outputs. 